/******************************************************************************
                         COPYRIGHT 1955-2008 by BUPT ISC.
                        北京邮电大学信息安全中心 版权所有
                           Web: http://www.bupt.edu.cn
 *******************************************************************************/
/*******************************************************************************
  文件名： string_utils.h
  项目：   
  模块：   common
  作者：   huangwei
  版本：   0.1
  创建于:  2009-03-17
  描述：
    字符串操作工具类函数

  修改历史：
  日期： 修改人： 修改描述：
  
 *********************************************************************************/

#ifndef STRING_UTILS_HEAD
#define STRING_UTILS_HEAD

#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <stdio.h>

/* 去除字符串首部的空白（空格、tab、回车、换行）*/
char *ltrim(char *pcSource);

/* 去除字符串尾部的空白（空格、tab、回车、换行）*/
char *rtrim(char *pcSource);

/* 去除字符串两端的空白（空格、tab、回车、换行）*/
char *trim(char *pcSource);

/* 删除自commentSign字符开始的所有注释内容 */
void trimComment(char *pcSource, char commentSign);
    
/* 将字符串中所有出现的某个单个字符替换为新的指定字符 */
char *replaceChar(char *pcSource, char cOld, char cNew);

/* 将字符串中的所有出现的某个子串替换为新的子串 */
char *replaceString(char **pcSource, const char *pcOld, const char *pcNew);

/* 计算字符串中指定字串出现的次数 */
int countWords(char *pcSource, const char *pcWord);

/* 处理\转义字符*/
int handleEscape(char *pcSource);

/* 处理\0x00转义字符 */
int handle0Escape(char *pcSource);

/* 16进制字符串转为ASCII码字符值 */
char hex2char(char *pcHex);

/* 截取指定长度的字符串(strndup版本) */
char *substr(const char* str, size_t begin, size_t len);

/* 截取指定长度的字符串(strndupa版本) */
char *substra(const char* str, size_t begin, size_t len);

#endif
